
# -*- coding: utf-8 -*-
import os
os.environ['PATH'] ="C:/Oracle/Client/bin" + os.pathsep +os.environ['PATH'] 
import cx_Oracle

"""
Dictionnaires cote serveur
"""
class ValidationLocale(object):
    pass

class Dictionnaire(object):
    
    erreurSqlMsg={                  
           0:'Oups!..Erreur indéterminée',
           # "select * from pme"
           942:'Table ou vue inexistante',
           #"select 2 / 0 from dual"
           1476:'le diviseur est égal à zéro',
           # "select N from emp"
           904:'identificateur non valide',
           # "slect Nome from emp"
           # "--rem"
           900:'instruction SQL non valide', 
           #"select nome rom emp"
           923:'mot-clé FROM abscent à l\'emplacement prévu',
           # "select Nom from emp where" 
           936:'expression absente',
           # "select Nome from emp where nome='roy' orde"
           933:'la commande SQL ne se termine pas correctement',
           #"select Nome from emp where nome='e' order"
           924:'mot-clé BY absent',
           # "select Nome from emp where nome='e' by nome having"
           921:'fin inattendue d\'une commande SQL',
           # "Alter emp"
           940: 'commande ALTER non valide',
           # "create table"
           901: 'commande CREATE non valide',
           #"insert"
           925: 'mot-clé INTO absent',
           # "update emp
           971: 'mot-clé SET absent',
           #"alter table emp delete"
           1735: 'option ALTER TABLE non valide',
           # ""
           24373: 'longueur indiquée non valide pour l\'instruction',
           # "set"
           922: 'option erronée ou absente',
           955: 'cette table existe dejà'}

           # Erreur de la base de données elle même
    erreurDBMsg={#con=cx_Oracle.Connection('dalek/*@titan')
           0:'Oups!..Erreur indéterminée',
           1005:'aucun mot de passe indiqué',
           1017:'Nom d\'utilisateur ou mot de passe invalid',
           28000:'Le compte est verouillé',
           28009:'La connection en tant que SYS devrait être SYSDBA ou SYSOPER',
           12154: 'TNS : l\'identificateur de connexion indiqué n\'a pas pu être résolu'}
 
    sqlType={'TEXTE':'VARCHAR2', # afficher l'option de taille
             'ENTIER':'NUMBER', # afficher l'option de taille
             'RÉEL':'NUMBER', # avec précision afficher l'option de précision 
             'DATE':'DATE',
             'CCARACTÈRE':'CHAR'}
    
    sqlCursorDescription = {
             'name':0, 'type':1, 'display_size':2, 
             'internal_size':3, 'precision':4, 'scale':5, 'null_ok':6}
    @classmethod
    def getError(self,dict,erreurNo):
        if(dict.upper()=='BASEDONNEES'):
            if Dictionnaire.erreurDBMsg.has_key(erreurNo):
                    return Dictionnaire.erreurDBMsg[erreurNo]
            else:
                return Dictionnaire.erreurDBMsg[0]
        elif (dict.upper()=='SQL'):
            if Dictionnaire.erreurSqlMsg.has_key(erreurNo):
                    return Dictionnaire.erreurSqlMsg[erreurNo]
            else:
                return Dictionnaire.erreurSqlMsg[0]
        else:
            return 'Oups!..Erreur indéterminée'
        pass
    
    def __init__(self):
        pass
        